iT邦幫忙

2023 iThome 鐵人賽

0
DevOps

跟著菜鳥手把手用Docker建立服務系列 第 25

Day25 - 菜鳥們一起深入探討 Docker - Image Layer 篇

  • 分享至 

  • xImage
  •  

人對求知慾望要有貪婪的心態,學會基本的知識是一定要的,最後我們要往更細節去探討,盡量讓技術更發揮更極致,這樣也會比別人更不一樣


什麼是Image Layer?
https://ithelp.ithome.com.tw/upload/images/20240203/20158512vtsnx577Ry.png

  • 把映像檔拆開,裡面是一層又一層的Layer,像堆疊積木一樣,堆疊而成
  • 容器則是在每個映像檔上面,再加上一個R/W層
  • 在 Docker 創建 Image時,每一條指令都會創建一個新的層,任何更改都會增加一個新的層
  • 當你Layer越多層代表 Image Size 隨之增加甚至在創建 Image 的過程會花很多時間

科技始於人性,很多成本我們都必須考慮到,例如容量、時間、順暢度、安全性..等,這些成本其實大多數都是相輔相成的

如何精簡化Image
我們拿ubuntu做範例,分別創建兩個Image來做比較

Dockerfile ubuntu-image-1

FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y wget
RUN wget https://github.com/ipinfo/cli/releases/download/ipinfo-2.0.1/ipinfo_2.0.1_linux_amd64.tar.gz
RUN tar zxf ipinfo_2.0.1_linux_amd64.tar.gz
RUN mv ipinfo_2.0.1_linux_amd64 /usr/bin/ipinfo
RUN rm -rf ipinfo_2.0.1_linux_amd64.tar.gz

Dockerfile ubuntu-image-2


FROM ubuntu:20.04
RUN apt-get update && \
    apt-get install -y wget && \
    wget https://github.com/ipinfo/cli/releases/download/ipinfo-2.0.1/ipinfo_2.0.1_linux_amd64.tar.gz && \
    tar zxf ipinfo_2.0.1_linux_amd64.tar.gz && \
    mv ipinfo_2.0.1_linux_amd64 /usr/bin/ipinfo && \
    rm -rf ipinfo_2.0.1_linux_amd64.tar.gz

我分別建立Image ubuntu-image-1 跟 ubuntu-image-2

建立 ubuntu-image-1 過程資訊
https://ithelp.ithome.com.tw/upload/images/20240203/20158512J0W7T64MPg.png

建立 ubuntu-image-2 過程資訊
https://ithelp.ithome.com.tw/upload/images/20240203/20158512k6LWl90ugT.png

比對 ubuntu-image-1 跟 ubuntu-image-2 的Size
https://ithelp.ithome.com.tw/upload/images/20240203/20158512gfsJDBVqyI.png

  • 建立Image過程,ubuntu-image-1 要花時間長一點 ubuntu-image-2 花的時間比較短
  • ubuntu-image-2 的 Size 比 ubuntu-image-1 小,因為有提到一個指令就會存一個 Layer 層
  • ubuntu-image-1 跟 ubuntu-image-2 功能是一模一樣,可是創建時間跟Size卻不一樣,我們透過精簡化參數,RUN 從原本的多行改為一行,既然 ubuntu-image-1 跟 ubuntu-image-2 功能是一模一樣,為何不用最好的方式去創建Image

有沒有覺得從基本繼續往下學,發現有很多細節要學,隨然會覺得很雜很麻煩,但我覺得這很重要,畢竟做到大型的系統,要考慮的細節更多, 所以我們要養成好還要更好的心態/images/emoticon/emoticon12.gif


參考資料:
映像檔分層概念


上一篇
Day24 - 跟菜鳥們一起幫 Docker 做健康檢查
下一篇
Day26 - 菜鳥們一起深入探討 Docker - Multi Stage 篇
系列文
跟著菜鳥手把手用Docker建立服務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言